<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 * Description of Bacon
 *
 * @author Guilherme
 */
class Bacon extends CI_Controller {

    public function index() {
        if (!isset($_SESSION))
            session_start();
        $dados = array();
        if (isset($_SESSION['usuario'])) {
            $usuario = unserialize($_SESSION['usuario']);
            $dados = array('usuario' => $usuario);
        }
        $dados['produtos'] = ProdutoDAO::listar();
        $this->load->view('home', $dados);
    }

    public function cadastroProduto() {
        if (!isset($_POST['cadastro'])) {
            $this->load->view('cadastro');
        } else {
            extract($_POST);
            $produto = new Produto(null, new Tipo($tipo), $nome, $preco, $descricao, $detalhes);
            ProdutoDAO::inserir($produto);
            $this->load->view('cadastro');
        }
    }

    public function editarProduto() {
        if (isset($_POST['editar'])) {
            extract($_POST);
            $produto = new Produto($idProduto, new Tipo($tipo), $nome, $preco, $descricao, $detalhes);
            ProdutoDAO::atualizar($produto);
            $this->load->view('cadastro');
        } else {
            extract($_GET);
            $produto = ProdutoDAO::getById($idProduto);
            $this->load->view('editar', array('produto' => $produto));
        }
    }

    public function removerProduto() {
        if (isset($_GET['idProduto'])) {
            extract($_GET);
            $produto = new Produto($idProduto);
            ProdutoDAO::excluir($produto);
            $this->load->view('cadastro');
        }
    }

    public function login() {
        if (isset($_POST['login'])) {
            extract($_POST);
            $usuario = UsuarioDAO::login($login, $senha);
            session_start();
            if ($usuario->getIdUsuario()) {
                $_SESSION['usuario'] = serialize($usuario);
                $this->index();
            } else {
                $_SESSION["erro"] = "Erro ao fazer login!";
                $this->load->view('login');
            }
        } else {
            $this->load->view('login');
        }
    }

    public function cadastrarUsuario() {
        if (isset($_POST['cadastro'])) {
            extract($_POST);
            $usuario = new Usuario(null, $login, $senha, new Permissao(2));
            UsuarioDAO::inserir($usuario);

            $endereco = new Endereco(null, $rua, $numero, $complemento, new Cidade(1));

            $cliente = new Cliente($usuario, null, $nome, $sobrenome, $telefone, null, array($endereco));
            ClienteDAO::inserir($cliente);
            $this->index();
        } else {
            $this->load->view('novoCliente');
        }
    }

    public function addCart() {
        if (!isset($_SESSION))
            session_start();
        if (isset($_GET['idProduto'])) {
            if (!isset($_SESSION['cart'])) {
                $produtos = array();
            } else {
                if (is_string($_SESSION['cart'])) {
                    $produtos = unserialize($_SESSION['cart']);
                } else {
                    $produtos = array();
                }
            }
            $produtos[] = ProdutoDAO::getById($_GET['idProduto']);
            $_SESSION['cart'] = serialize($produtos);
        }
        $this->index();
    }

    public function limparCart() {
        if (!isset($_SESSION))
            session_start();
        unset($_SESSION['cart']);
        $this->index();
    }

    public function listarPedidos() {
        $vendas = VendaDAO::listar();
        $this->load->view('vendas', array("vendas" => $vendas));
    }

    public function atualizarCadastro() {
        if (!isset($_SESSION))
            session_start();
        $dados = array();
        if (isset($_SESSION['usuario'])) {
            $usuario = unserialize($_SESSION['usuario']);
            $dados = array('usuario' => $usuario);
        }
        if (isset($_POST['atualiazar'])) {
            extract($_POST);
            $endereco = new Endereco($idEndereco, $rua, $numero, $complemento, new Cidade(1));
            $cliente = new Cliente($usuario, null, $nome, $sobrenome, $telefone, null,
                            array($endereco));
            ClienteDAO::atualizar($cliente);
            $_SESSION['msg'] = "Cadastro Atualizado com Sucesso!";
        }
        $this->load->view('atualizar', $dados);
    }

    public function logout() {
        if (!isset($_SESSION)) {
            session_start();
            session_destroy();
        }
        $this->index();
    }

    public function fecharPedido() {
        $this->openSession();

        $usuario = unserialize($_SESSION['usuario']);
        $cliente = ClienteDAO::getById($usuario->getIdUsuario());

        $produtos = unserialize($_SESSION['cart']);


        $enderecos = $cliente->getEnderecos();

        $status = StatusDAO::getById(1);
        $pagamento = PagamentoDAO::getById(1);


        $venda = new Venda(null, $cliente, $status, $pagamento, $enderecos[0], "Coment");

        foreach ($produtos as $produto) {
            $itemVenda = new ItemVenda(null, $produto, 1);
            $venda->adicionarItemDeVenda($itemVenda);
        }

        VendaDAO::inserir($venda);
        $this->load->view('pedido');
    }

    public function openSession() {
        if (!isset($_SESSION))
            session_start();
    }

}

?>
